home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
PsL Monthly 1993 December
/
PSL Monthly Shareware CD-ROM (December 1993).iso
/
prgmming
/
dos
/
basic
/
apg_2.exe
/
PHONE.S&M
< prev
next >
Wrap
Text File
|
1993-03-18
|
20KB
|
780 lines
''''''''''''''''''''''''''''''''''''''''''''''''''
' '
' General Phone List '
' ------------------ '
' '
' CREATED BY APG '
' S & M SOFTWARE '
' COPYRIGHT 1993 '
' '
' USE file is PHONE.USE '
' '
' Author: S&M Software '
' Date: 03-18-1993 '
' Time: 10:39:13 '
' '
' USE file Created USE file Modified '
' Date: 03-10-1993 Date: 03-14-1993 '
' Time: 22:50:08 Time: 11:18:01 '
''''''''''''''''''''''''''''''''''''''''''''''''''
DEFINT A-Z
CONST FALSE = 0, TRUE = NOT FALSE
TYPE rectype 'Define variables for file
pnbr AS STRING * 12
xName20 AS STRING * 30
xAddress AS STRING * 25
xcity40 AS STRING * 20
xstate50 AS STRING * 2
xZip60 AS STRING * 10
xSpouse AS STRING * 10
xData80 AS STRING * 8
xGift90 AS INTEGER
sts AS STRING * 1
END TYPE
TYPE indextype 'Define index
recnum AS INTEGER
pnbr AS STRING * 12
END TYPE
DECLARE FUNCTION getinput$ (work$, fl%, nflg$, plen, prec, form$, act$, mode$)
DECLARE SUB arrow (mode$, opt$, tracfld)
DECLARE SUB clearfore ()
DECLARE SUB displaydata ()
DECLARE SUB export ()
DECLARE SUB message (msg$, resp$)
DECLARE SUB newrec (recnum, numofrec, maxrec, newkey$, exit$, mode$)
DECLARE SUB nextrec (direc$, exit$, numofrec, recnum)
DECLARE SUB sortindex ()
DIM SHARED numofrec
DIM SHARED f3.0$
DIM SHARED phone AS rectype
f3.0$ = "####"
ON ERROR GOTO errhandle
COLOR 15, 0
CLS
OPEN "PHONE.DAT" FOR RANDOM AS #1 LEN = LEN(phone)
numofrec = LOF(1) \ LEN(phone)
maxrec = numofrec + 100
DIM SHARED index(1 TO maxrec) AS indextype
IF numofrec <> 0 THEN
FOR recnum = 1 TO numofrec
GET #1, recnum, phone
index(recnum).recnum = recnum
index(recnum).pnbr = phone.pnbr
NEXT
END IF
'
'----- Print menu -----'
'
LOCATE 1, 29
COLOR 7, 9
PRINT "│ │"
LOCATE 1, 31
PRINT "General Phone List"
LOCATE 2, 29
PRINT "│ │"
LOCATE 2, 31
PRINT "------------------"
sortindex 'sort records
recnum = 0 'reset record number
LOCATE 5, 5: PRINT "01-Phone Number "
LOCATE 7, 5: PRINT "02-Name "
LOCATE 8, 5: PRINT "03-Address "
LOCATE 9, 5: PRINT "04-City "
LOCATE 10, 5: PRINT "05-State "
LOCATE 11, 5: PRINT "06-Zip Code "
LOCATE 13, 5: PRINT "07-Spouse's Name "
LOCATE 14, 5: PRINT "08-Birthday "
LOCATE 15, 5: PRINT "09-Gift Amount "
'
'----- Start processing -----'
'
start:
mode$ = ""
phone.pnbr = ""
phone.xName20 = ""
phone.xAddress = ""
phone.xcity40 = ""
phone.xstate50 = ""
phone.xZip60 = ""
phone.xSpouse = ""
phone.xData80 = ""
phone.xGift90 = 0
phone.sts = ""
nflg$ = ""
clearfore
LOCATE 5, 24
newkey$ = getinput$(phone.pnbr, 12, "L", 0, 0, "", act$, mode$)
IF act$ = "PU" OR act$ = "PD" THEN
opt$ = act$
IF recnum = 0 THEN
IF opt$ = "PU" AND numofrec <> 0 THEN recnum = numofrec + 1
END IF
GOTO menu10
END IF
IF newkey$ = " " GOTO fin
IF UCASE$(newkey$) = "N " THEN
opt$ = "N"
GOTO menu10
END IF
GOTO io
'
'------ Option bar -----'
'
menu:
mode$ = "C"
LOCATE 23, 1
PRINT STRING$(80, " ")
LOCATE 23, 12, 1
COLOR 7, 9
PRINT "FIELD #, PgUp, PgDn, ";
PRINT "All, Next, Back, Delete, Sort, Export";
COLOR 15, 0
PRINT " "
COLOR 15, 9
LOCATE 23, 18: PRINT "#"
LOCATE 23, 33: PRINT "A"
LOCATE 23, 38: PRINT "N"
LOCATE 23, 44: PRINT "B"
LOCATE 23, 50: PRINT "D"
LOCATE 23, 58: PRINT "S"
LOCATE 23, 64: PRINT "E"
COLOR 15, 0
opt$ = ""
menu5:
LOCATE 23, 71
PRINT opt$;
DO
instr$ = INKEY$
LOOP WHILE instr$ = ""
IF INSTR("BANDSE", UCASE$(instr$)) > 0 THEN opt$ = instr$: GOTO menu10
IF instr$ = CHR$(13) GOTO menu10
IF instr$ = CHR$(27) GOTO menu
IF instr$ = CHR$(8) GOTO menu
IF LEN(instr$) = 2 THEN
code = ASC(RIGHT$(instr$, 1))
IF code = &H49 THEN opt$ = "PU"
IF code = &H51 THEN opt$ = "PD"
GOTO menu10
END IF
opt$ = opt$ + instr$
GOTO menu5
'
'----- Start here for action keys -----'
'
menu10:
resp$ = ""
IF opt$ = "" THEN GOTO start
opt$ = UCASE$(opt$)
IF MID$(opt$, 1, 1) = "0" THEN opt$ = MID$(opt$, 2, 1)
LOCATE 23, 1
PRINT STRING$(80, " ")
LOCATE 23, 6, 1
COLOR 7, 9
IF INSTR("SEBNPUPD", opt$) = 0 THEN
PRINT "Active Keys: <PgUp>, <PgDn>, <Arrows>, <Del>, <Ins>, <Esc> or <Enter>";
COLOR 15, 9
LOCATE 23, 20: PRINT "PgUp";
LOCATE 23, 28: PRINT "PgDn";
LOCATE 23, 36: PRINT "Arrows";
LOCATE 23, 46: PRINT "Del";
LOCATE 23, 53: PRINT "Ins";
LOCATE 23, 60: PRINT "Esc";
LOCATE 23, 69: PRINT "Enter";
END IF
COLOR 15, 0
SELECT CASE opt$
CASE "1"
message "Can not change index - Press any key", resp$
GOTO menu
CASE "2"
GOTO fld20 'Name
CASE "3"
GOTO fld30 'Address
CASE "4"
GOTO fld40 'City
CASE "5"
GOTO fld50 'State
CASE "6"
GOTO fld60 'Zip Code
CASE "7"
GOTO fld70 'Spouse's Name
CASE "8"
GOTO fld80 'Birthday
CASE "9"
GOTO fld90 'Gift Amount
CASE "A"
mode$ = "A"
GOTO fld20
CASE "N", "PD"
direc$ = "F"
nextrec direc$, exit$, numofrec, recnum
IF exit$ = "A" GOTO start
GOTO menu
CASE "B", "PU"
direc$ = "B"
nextrec direc$, exit$, numofrec, recnum
IF exit$ = "A" GOTO start
GOTO menu
CASE "D"
phone.sts = "D"
GOTO del
CASE "S"
resp$ = "1"
message "Sorting file - Please wait", resp$
sortindex
resp$ = "2"
message "", resp$
CASE "E"
CLOSE (2)
KILL "phone.exp"
resp$ = "1"
message "Preparing file for export - Please wait", resp$
export
resp$ = "2"
message "", resp$
GET #1, recnum, phone
END SELECT
GOTO menu
'
'----- Input fields -----'
'
fld20: 'Name
tracfld = 2
LOCATE 7, 24
phone.xName20 = getinput$(phone.xName20, 30, "L", 0, 0, "", act$, mode$)
LOCATE 25, 1
PRINT STRING$(80, " ");
IF phone.xName20 = " " AND mode$ <> "C" THEN
GOTO start
END IF
IF mode$ = "C" OR act$ <> "" GOTO add
fld30: 'Address
tracfld = 3
LOCATE 8, 24
phone.xAddress = getinput$(phone.xAddress, 25, "L", 0, 0, "", act$, mode$)
IF mode$ = "C" OR act$ <> "" GOTO add
fld40: 'City
tracfld = 4
LOCATE 9, 24
phone.xcity40 = getinput$(phone.xcity40, 20, "L", 0, 0, "", act$, mode$)
IF mode$ = "C" OR act$ <> "" GOTO add
fld50: 'State
tracfld = 5
LOCATE 10, 24
phone.xstate50 = getinput$(phone.xstate50, 2 , "L", 0, 0, "", act$, mode$)
IF mode$ = "C" OR act$ <> "" GOTO add
fld60: 'Zip Code
tracfld = 6
LOCATE 11, 24
phone.xZip60 = getinput$(phone.xZip60, 10, "L", 0, 0, "", act$, mode$)
IF mode$ = "C" OR act$ <> "" GOTO add
fld70: 'Spouse's Name